<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
</body>
<script>
  const data = [
    { id: '01', name: '张大大', pid: 0, job: '项目经理' },
    { id: '16', name: '何新大大', pid: 0, job: '项目经理2' },
    { id: '02', name: '小亮', pid: '01', job: '产品leader' },
    { id: '03', name: '小美', pid: '01', job: 'UIleader' },
    { id: '04', name: '老马', pid: '01', job: '技术leader' },
    { id: '05', name: '老王', pid: '01', job: '测试leader' },
    { id: '06', name: '老李', pid: '01', job: '运维leader' },
    { id: '07', name: '小丽', pid: '02', job: '产品经理' },
    { id: '08', name: '大光', pid: '02', job: '产品经理' },
    { id: '09', name: '小高', pid: '03', job: 'UI设计师' },
    { id: '10', name: '小刘', pid: '04', job: '前端工程师' },
    { id: '11', name: '小华', pid: '04', job: '后端工程师' },
    { id: '12', name: '小李', pid: '04', job: '后端工程师' },
    { id: '13', name: '小赵', pid: '05', job: '测试工程师' },
    { id: '14', name: '小强', pid: '05', job: '测试工程师' },
    { id: '15', name: '小涛', pid: '06', job: '运维工程师' },
    { id: '17', name: '小X', pid: '16', job: '何新前端开发' }
  ];
  function arrToTree(arr, pid) {
      let result = [];
      arr.forEach(item => {
        if (item.pid === pid) {
          item.children = arrToTree(arr, item.id);
          // 如果chhildren为空就清空掉
          if (item.children.length === 0) {
            delete item.children;
          };
          result.push(item);
        };
      });
      return result;
  }
  console.log(arrToTree(data, 0));
</script>
</html>